package com.annotation;

import org.junit.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Date;

@StandardDoc(date = "2022-12-6",version = 2.0,lastModifyBy = "tom")
public class AnnotationDemo {
    /**
     * Annotation
     *   本意是 注解
     * 注解和注释什么区别
     *   注释：在代码中只提供提示的作用，不参与代码的运行，在运行的时候是完全被忽略的
     *   注解：本质也是一种注释，可以通过代码与注解配合使用
     * 应用场景
     *   jdk中可以使用，但是用处非常少
     *   作为一种辅助途径，应用在一些第三方的工具或框架里
     * 使用
     *   jdk内置注解
     *      Override 子类的方法覆盖掉父类的方法(重写)
     *      Deprecated  定义当前方法为过期方法
     *      SuppressWarnings 忽略掉警告
     *   第三方工具 JUnit 单元测试
     *
     * 自定义注解
     *   注解是一种特殊的接口 @interface
     *   类中：属性和方法 构造方法
     *   接口：static final修饰的属性  抽象方法
     *   注解：只能有数据类型和名称表示当前注解的参数
     *        数据类型：基本数据类型，String 数组 但是不能是复杂数据类型
     *        如果有默认值的话，使用 default 设置默认值
     * 元注解
     *   用来描述注解的注解
     *
     */

    @BeforeClass
    public static void classBefore(){
        System.out.println("begin");
    }
    @Before
    public void methodBefore(){
        System.out.println("method Begin");
    }

    @Test
    public void test1(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bigdata?useSSL=false","root","root");
            System.out.println(conn);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @Test
    public void test2(){
        System.out.println("test2");
    }

    @After
    public void methodAfter(){
        System.out.println("method End");
    }


    @AfterClass
    public static void classAfter(){
        System.out.println("end");
    }
}
